extensions [gis profiler]                                                                        ;allows importing of raster from GIS and profiling model speed
breed [ owls owl ]                                                                      ;sets up breed
globals [ dead-owls-winter dead-owls-summer 
          days month mday
          ticksForage]
patches-own [ landcover rodents mortality road river maybeNearHighway? deadowlcount meanDeadOwlCount]
owls-own [age sex roost behavior outtime]
  
to setup
  clear-all                                                                             ;clear-all resets world to initial empty state
;  set interstatedistance 33.3                                                           ;means owls can sense interstate from
;  set rodentradius 3.33                                                                 ;means owls can sense rodent abundance in a radius 
;  set walkRandomness 5
;  set initPropFemale 0.5
;  set initPropJuv 0.75
  set days 365
;  set movesPerDay 36
;  set ticksOut 6
;  set ticksBack 6 
  set ticksForage (movesPerDay - ticksOut - ticksBack)
;  set speedCommute 4
;  set speedForage 1
  setup-patches
  setup-owls
  reset-ticks
end

to go 
  check-season
  let timeOfDay ticks mod movesPerDay
  if timeOfDay = 0 [ask owls [move-to roost set heading random-float 360]]
  if  timeOfDay < ticksOut [ask owls [set behavior "out_day"]]                                                                          ;owls leave roost
  if  timeOfDay >= ticksOut + ticksForage[ask owls [set behavior "in_day"]]                                                                    ;owls forage
  move
  owls-death
  tick
  updateCalendar
  if ticks >= (days * movesPerDay)
   [ final-steps
      stop ]
end

to setup-patches
  let map_in gis:load-dataset "habitat.asc" ;Change this path to whatever folder the landscape is located. Have to convert raster to ASCII file in GIS
  let I-84_in gis:load-dataset "highway.asc"
  let snake_in gis:load-dataset "river.asc"
  gis:set-world-envelope gis:envelope-of map_in
  gis:apply-raster map_in landcover
  gis:apply-raster I-84_in road
  gis:apply-raster snake_in river
  ask patches [                                                                          ;sets up the world so that color is coordinated with the raster I imported. When first imported, landcover raster background is black. 
    if landcover = 71 [ set pcolor 27 ]                                                  ;disturbed grassland
    if landcover = 11 [ set pcolor blue ]                                                ;open water
    if landcover = 90 [ set pcolor blue ]                                                ;wetlands
    if landcover = 95 [ set pcolor blue ]                                                ;wetlands
    if landcover = 21 [ set pcolor 3 ]                                                   ;roads
    if landcover = 22 [ set pcolor 3 ]                                                   ;low intensity development
    if landcover = 23 [ set pcolor 3 ]                                                   ;medium intensity development
    if landcover = 52 [ set pcolor 36 ]                                                  ;sage steppe
    if landcover = 81 [ set pcolor 55 ]                                                  ;hay/pasture
    if landcover = 82 [ set pcolor 55 ]                                                  ;cultivated crops
    if landcover = 42 [ set pcolor 36 ]                                                  ;evergreen forest
    if road = 0 [ set pcolor pink ]                                                      ;I-84 specifically
    if river = 105 [ set pcolor blue ]                                                   ;Snake river  
    ]
  ask patches with [ pcolor = pink ] [ ask neighbors [ set pcolor red ]]                 ;makes i-84 a little fatter than a single line
  ask patches with [ road = 0 ] [ set pcolor 53 ]                                        ;creating "green" median
  ask patches with [ pcolor = 55 ] [ set rodents random-normal 4 1.5 ]                   ;spring/summer=high rodent abundance
  ask patches with [ pcolor = 36 ] [ set rodents random-normal 2.8 1.5 ]                 ;sage steppe rodent abundance
  ask patches with [ pcolor = 27 ] [ set rodents random-normal 2.8 1.5 ]                 ;disturbed grassland rodent abundance
  ask patches with [ pcolor = 53 ] [ set rodents random-normal  4.8 1.5 ]                ;median rodent abundance/stays constant annually
  ask patches with [ pcolor = red ] 
  [ set mortality random-normal 0.279 0.189 set pcolor sky ]                             ;1 km segment mortality rates
  ask patches with [pcolor != sky] [set mortality 0.0001]                                 ;some baseline non-road mortality
  if OwlMovement = "distancesensing"
  [ask patches [set maybeNearHighway? false]
    ask patches with [pcolor = sky] [
      ask patches in-radius (interstatedistance + 2) [set maybeNearHighway? true]            ;use sensing distance + 2 to buffer out what is considered near interstate in case owl is in corner of cell
    ]
  ]
 end
 
to setup-owls
  set-default-shape owls "owl" 
  create-owls initial-number-owls  
  [ let rand random-float 1                                                              ;each owl draws random # between 0,1. Use "rand" w/i if else statements
;    if rand < 0.1
;      [ move-to one-of patches with [ pcolor = 36 ]]                                     ;roughly 10% of all owls are initially set up in sage steppe
;    if rand >= 0.1 and rand < 0.2  
;      [ move-to one-of patches with [ pcolor = 27 ]]                                     ;roughly 10% of all owls are initially set up in disturbed grassland
;    if rand >= 0.2
;      [ move-to one-of patches with [ pcolor = 55 ]]                                     ; roughly 80% of all owls are initially set up in agriculture
    move-to one-of patches with [pcolor = blue]
    set roost patch-here
    ifelse random-float 1 < initPropFemale 
      [set sex "f" set color pink]
      [set sex "m" set color sky]
    ifelse random-float 1 < initPropJuv 
      [set age "j" set size 6]
      [set age "a" set size 10]
    ;set size 6 set color white
  ]
end
 


to check-rodents                                                                         ;owl prodecure
  if-else random-float 1 < 0.5
   [ move-to max-one-of patches in-radius rodentradius [ rodents ]]                      ;move to patch w/i 20 m radius w/ highest rodent abundance 
   [ move-to one-of neighbors ] 
    set rodents rodents - 1 moveBack                                                             ;decreasing rodents on patch that owl has "hunted" on
end

to owls-death
  ask owls [
  if random-float 1 < mortality   [                                                      ;owls die if the probability of mortality is >than mortality value of patch they are currently on where mortality only occurs on the interstate patches.
    if-else ticks < 182 * movesPerDay [
      set dead-owls-summer dead-owls-summer + 1 ]                                        ;a way to count dead owls in spring/summer season
    [ set dead-owls-winter dead-owls-winter + 1 ]                                        ;a way to count dead owls in fall/winter season
    set deadowlcount deadowlcount + 1                                                    ;gave patches a variable called deadowlcount, this can be used in other analyses
    die  ]
  ]
end

to seasonswitch                                                                          ;patch procedure
 ask patches with [ pcolor = 55 ]                                                        ;fall/winter rodent abundance, lower than spring/summer
  [ifelse random-float 1 <= 0.3                                                          ;randomly selects patches of agriculture to change brown and reduce rodent abundance at, simulating fields being plowed in the late summer/fall.
  [ set pcolor 33 set rodents rodents - 2 ][set pcolor 55]]                              ;when season switch occurs agriculture patches turn from green to brown
      
end

to export-gis-data                                                                       ;exports rasters of mortality density of each model run
  let raster gis:patch-dataset deadowlcount 
  gis:store-dataset raster                                                               ;Each raster is exported with the following naming convetion so I know what model run it is.
     ( word "mortality-" initial-number-owls "-" OwlMovement "-" behaviorspace-run-number ".asc")
end

to check-season
  if ticks = 170 * movesPerDay [ seasonswitch ]                                                        ;Fields begin being plowed gradually over a period of 30 ticks (30 days). 
  if ticks = 178 * movesPerDay [ seasonswitch ]                                                        ;At each designated tick the procedure "seasonswitch" occurs where green patches turn brown and rodent abundance decreases by 2.
  if ticks = 180 * movesPerDay [ seasonswitch ]
  if ticks = 188 * movesPerDay [ seasonswitch ]
  if ticks = 190 * movesPerDay [ seasonswitch ]
  if ticks = 198 * movesPerDay [ seasonswitch ]
  if ticks = 200 * movesPerDay [ seasonswitch ]
end

to final-steps
  ask patches [ set meanDeadOwlCount mean [ deadowlcount ] of patches in-radius 5]
  let maxDead max [meanDeadOwlCount] of patches
  ask patches [ set pcolor scale-color  yellow meanDeadOwlCount 0 maxDead]   ;Scales patch color based on the number of owls killed per patch
  ;export-gis-data                                                                       ;Creates rasters of the mortality density spots at the end of each model run, saves them to the location the model is saved at (My harddrive).
end


to owls-out
    set heading heading + random-float walkRandomness - (walkRandomness / 2)
    fd random speedCommute + 1
    set outtime outtime + 1
    if outtime >= ticksOut
    [set behavior "forage" set outtime 0]
end

to owls-forage                                 
  if OwlMovement = "random"                                                            ;Owls choose a random direction and move forward one patch. Rodent depletion occurs in patches where an owl has been. This is the "null" model.;
    [ set heading random-float 360 fd speedForage set rodents rodents - 1 moveBack] 
  if OwlMovement = "rodentsensing"                                                     ;Owls only sense rodent abundance in a 20 m radius of their current location and move to the patch with the highest rodent abundance.
    [ check-rodents ]
  if OwlMovement = "distancesensing"                                                   ;Owls have the ability to sense rodent abundance and distance from the interstate.
    [            ;If owls are w/i 100 meters from Interstate they will face it and go towards it one patch at a time
      ifelse maybeNearHighway?                                                         ;speeds up runs by not even having owls far from the interstate check if it is in radius
        [let intrad patches in-radius interstatedistance with [ pcolor = sky ]         ;even when somewhat near it is still possible to not be in range so need to check
          ifelse any? intrad
          [face one-of intrad          ;below that threshold they will sense rodents and move towards patches of highest rodent abundance.
          fd speedForage set rodents rodents - 1 moveBack]
          [check-rodents]
          ]                                                  
        [ check-rodents ]
  ]
end

to owls-in
    face roost
    ifelse distance roost < speedCommute
    [move-to roost
      set heading random-float 360
      if behavior = "in" [set behavior "out"]]
    [set heading heading + random-float walkRandomness - (walkRandomness / 2)
    fd speedCommute]

end

to updateCalendar
  let currentDay ceiling (ticks / movesPerDay)
  ifelse currentDay <= 31
  [set month "Jan" set mday currentDay]
  [ifelse currentDay <= 59
    [set month "Feb"set mday currentDay - 31]
    [ifelse currentDay <= 90
      [set month "Mar"set mday currentDay - 59]
      [ifelse currentDay <= 120
        [set month "Apr"set mday currentDay - 90]
        [ifelse currentDay <= 151
          [set month "May"set mday currentDay - 120]
          [ifelse currentDay <= 181
            [set month "Jun"set mday currentDay - 151]
            [ifelse currentDay <= 212
              [set month "Jul"set mday currentDay - 181]
              [ifelse currentDay <= 243
                [set month "Aug"set mday currentDay - 212]
                [ifelse currentDay <= 273
                  [set month "Sep"set mday currentDay - 243]
                  [ifelse currentDay <= 304
                    [set month "Oct"set mday currentDay - 273]
                    [ifelse currentDay <= 334
                      [set month "Nov"set mday currentDay - 304]
                      [set month "Dec"set mday currentDay - 334]]]]]]]]]]]
end

to move
  ask owls [
    ifelse behavior = "out_day" or behavior = "out"
    [owls-out]
    [ifelse behavior = "in_day" or behavior = "in"
      [owls-in]
      [owls-forage]
    ]
  ]

end

to moveBack
  if (month = "Feb" or month = "Mar" or month = "Apr" or month = "May" or month = "Jun") and sex = "m"
  [set behavior "in"]
  if (month = "May" or month = "Jun") and sex = "f"
  [set behavior "in"]
end
@#$#@#$#@
GRAPHICS-WINDOW
250
10
934
725
-1
-1
2.0
1
10
1
1
1
0
0
0
1
0
336
0
341
0
0
1
ticks
30.0

BUTTON
18
27
82
60
Setup
Setup
NIL
1
T
OBSERVER
NIL
NIL
NIL
NIL
1

BUTTON
85
27
148
60
Go
Go
T
1
T
OBSERVER
NIL
NIL
NIL
NIL
0

SLIDER
20
75
192
108
initial-number-owls
initial-number-owls
0
1000
470
1
1
NIL
HORIZONTAL

MONITOR
21
282
78
327
# owls
count owls
0
1
11

PLOT
20
487
220
637
Average rodent abundance
NIL
NIL
0.0
10.0
0.0
2.0
true
false
"" ""
PENS
"default" 1.0 0 -16777216 true "" "plot mean [ rodents ] of patches"

PLOT
20
332
220
482
Owls
Time
NIL
0.0
10.0
0.0
10.0
true
true
"" ""
PENS
"live owls" 1.0 0 -3844592 true "" "plot count owls"
"dead owls" 1.0 0 -16777216 true "" "plot  dead-owls-winter + dead-owls-summer"

MONITOR
20
174
120
219
deadowlswinter
dead-owls-winter
17
1
11

MONITOR
20
229
128
274
deadowlssummer
dead-owls-summer
17
1
11

CHOOSER
20
118
158
163
OwlMovement
OwlMovement
"random" "rodentsensing" "distancesensing"
0

MONITOR
87
281
144
326
Day
ceiling (ticks / movesPerDay)
0
1
11

BUTTON
153
27
216
60
Step
go
NIL
1
T
OBSERVER
NIL
NIL
NIL
NIL
0

MONITOR
147
180
215
225
Date
word month mday
17
1
11

BUTTON
38
648
109
681
Profiler
  setup                  ;; set up the model\n  profiler:start         ;; start profiling\n  repeat 360 [ go ]       ;; run something you want to measure\n  profiler:stop          ;; stop profiling\n  print profiler:report  ;; view the results\n  profiler:reset         ;; clear the data
NIL
1
T
OBSERVER
NIL
NIL
NIL
NIL
1

SLIDER
957
93
1129
126
interstatedistance
interstatedistance
0
100
33.3
0.1
1
NIL
HORIZONTAL

SLIDER
959
136
1131
169
rodentradius
rodentradius
0
10
3.33
0.01
1
NIL
HORIZONTAL

SLIDER
961
184
1133
217
walkRandomness
walkRandomness
0
100
5
1
1
NIL
HORIZONTAL

SLIDER
961
230
1133
263
initPropFemale
initPropFemale
0
1
0.5
0.01
1
NIL
HORIZONTAL

SLIDER
964
279
1136
312
initPropJuv
initPropJuv
0
1
0.75
0.01
1
NIL
HORIZONTAL

SLIDER
964
330
1136
363
movesPerDay
movesPerDay
0
120
36
1
1
NIL
HORIZONTAL

SLIDER
966
381
1138
414
ticksOut
ticksOut
0
120
6
1
1
NIL
HORIZONTAL

SLIDER
967
429
1139
462
ticksBack
ticksBack
0
120
6
1
1
NIL
HORIZONTAL

SLIDER
972
479
1144
512
speedCommute
speedCommute
0
20
4
1
1
NIL
HORIZONTAL

SLIDER
973
530
1145
563
speedForage
speedForage
0
20
1
1
1
NIL
HORIZONTAL

TEXTBOX
963
12
1113
78
Moved to sliders for calibration and sensitivity analysis
18
0.0
1

@#$#@#$#@
## WHAT IS IT?

The overall purpose of this model is to examine barn owl movement, behavior, and mortality in relation to various habitat features, including but not limited to, land cover type, distance from I-84, and small rodent abundance.

## HOW IT WORKS

AGENTS:

The only agents the model contains are owls. Owls are randomly placed on the 	 landscape stratified by land cover type where land cover is broken down into three important types; disturbed grassland, sage steppe, and agriculture. 10% of total owls are placed in disturbed grassland, 10% of owls are placed in sage steppe, and 80% of owls are placed in agriculture. 

Barn owls within the model environment can move in one of three different ways as selected by the observer; distance sensing, rodent sensing, and random movement. All owls move in each time step under each scenario and there is no hierarchy of age or size in the owls, they are all assumed to have perfect knowledge under each movement scenario. Once an owl lands on a patch, rodent depletion occurs because the owl is assumed to have hunted successfully, and rodent abundance on that patch decreases by one. 

1. Under the distance sensing movement scenario, barn owls sense both distance from the interstate and rodent abundance at the same time. If owls are within 100 m of I-84, they face it and go to towards it, over-riding any other information they receive about rodent abundance. This is important because at the same time owls are “sensing” their distance from the interstate, they are also “sensing” rodent abundance within 1 km of themselves. IF they are not within 100 m of I-84, they move to the patch with the highest rodent abundance within 1 km.  This movement scenario assumes barn owls are able to sense the interstate and rodent abundance and based on this knowledge they move in a certain way.
 
2. Under the rodent sensing scenario barn owls only sense rodent abundance within 1 km of themselves. Distance from the interstate isn’t a factor. Owls move to the patch with the highest rodent abundance and in the next time step, move again, to the patch with highest rodent abundance. This movement scenario assumes that barn owls are solely focused on moving in a fashion that maximizes their access to rodents. 

3. Under random movement  barn owls, choose a random direction between 0 and 365 degrees and move forward one patch (30 m, because one patch is 30 x 30 m). This scenario is the null model against which other hypotheses of movement were tested because barn owls are not using any information to inform their movement, it assumes barn owls move randomly with no knowledge of their environment. 

PATCHES:

The world is made up of patches that have state variables for land cover type, rodent abundance, and probability of mortality for barn owls. 

Land cover is spatially explicit.The most important land cover types for model processes are disturbed grassland (tan), sage steppe (light brown), and irrigated agriculture (green).

Rodent abundance along the median patches (dark green) is higher than the surrounding landscape. Rodent abundances in sage steppe and disturbed grassland land cover types are much lower than the median and planted agriculture because while there are likely plenty of rodents there, these land cover types are more difficult for barn owls to hunt successfully. Planted agriculture rodent abundance is only slightly less than the median under the premise that it offers quality rodent habitat and thus quality foraging for barn owls. 

Seasonality is programmed into the model by having agricultural fields be plowed from time steps (nights) 170-200. When the fields are plowed their color changes from green to brown and their rodent abundance decreases by two under the assumption that plowed fields left as bare dirt during the winter offer little to no habitat for small rodents and their value as hunting areas for barn owls is greatly reduced.  

Probability of mortality is programmed into interstate patches (bright blue) based on standardized totals of dead barn owls per one km segments collected during roughly four years of systematic road mortality surveys within our study area. 

TIME AND SPACE:

The model is based on a 10 by 10 km area of southern Idaho near Twin Falls. Each patch is 30 x 30 meters square. The model runs for 365 ticks where each tick is one night, and one model run is one year.

## HOW TO USE IT

To initialize the model, select the desired movement type from the drop down menu called OwlMovement. Select the number of owls for the initial population size on the slider alled Initial-number-owls. Once you have selected the desired combination of these variables hit setup and then hit go. The model will run for 365 ticks or an entire year.

## THINGS TO NOTICE

Pay attention to the counters for # of dead owls in winter and # of dead owls in summer. Notice what happens once the model switches from summer to winter in the counters as well as the graph of rodent abundance. Also, always pay attention to the graph for number of dead owls compared to number of live owls.

Notice how owl movement differs under each of the different movement scenarios. Also pay attention to what happens to individual owls once they encounter interstate patches.

## THINGS TO TRY

Try each of the movement types in combination with a lot of owls initially and very few numbers of owls initially and see what happens to the population over time and by season.

## EXTENDING THE MODEL

Add in Sex and Age classes for the barn owl agents, giving them more state variables.

Make each night more detailed so owls have memory and return to a spatially explicit roost at the end of a night, and remember areas of quality foraging from the previous night.

## CREDITS AND REFERENCES

A huge thanks to Dr. Ben Pauli without whose patience, wisdom and creativity this model would not exist. 

Thanks to Erin Pikcilingis for providing the small rodent abundance data and Dr. Jim Belthoff for advice on model structure, function, and parameter inputs.
@#$#@#$#@
default
true
0
Polygon -7500403 true true 150 5 40 250 150 205 260 250

airplane
true
0
Polygon -7500403 true true 150 0 135 15 120 60 120 105 15 165 15 195 120 180 135 240 105 270 120 285 150 270 180 285 210 270 165 240 180 180 285 195 285 165 180 105 180 60 165 15

arrow
true
0
Polygon -7500403 true true 150 0 0 150 105 150 105 293 195 293 195 150 300 150

box
false
0
Polygon -7500403 true true 150 285 285 225 285 75 150 135
Polygon -7500403 true true 150 135 15 75 150 15 285 75
Polygon -7500403 true true 15 75 15 225 150 285 150 135
Line -16777216 false 150 285 150 135
Line -16777216 false 150 135 15 75
Line -16777216 false 150 135 285 75

bug
true
0
Circle -7500403 true true 96 182 108
Circle -7500403 true true 110 127 80
Circle -7500403 true true 110 75 80
Line -7500403 true 150 100 80 30
Line -7500403 true 150 100 220 30

butterfly
true
0
Polygon -7500403 true true 150 165 209 199 225 225 225 255 195 270 165 255 150 240
Polygon -7500403 true true 150 165 89 198 75 225 75 255 105 270 135 255 150 240
Polygon -7500403 true true 139 148 100 105 55 90 25 90 10 105 10 135 25 180 40 195 85 194 139 163
Polygon -7500403 true true 162 150 200 105 245 90 275 90 290 105 290 135 275 180 260 195 215 195 162 165
Polygon -16777216 true false 150 255 135 225 120 150 135 120 150 105 165 120 180 150 165 225
Circle -16777216 true false 135 90 30
Line -16777216 false 150 105 195 60
Line -16777216 false 150 105 105 60

car
false
0
Polygon -7500403 true true 300 180 279 164 261 144 240 135 226 132 213 106 203 84 185 63 159 50 135 50 75 60 0 150 0 165 0 225 300 225 300 180
Circle -16777216 true false 180 180 90
Circle -16777216 true false 30 180 90
Polygon -16777216 true false 162 80 132 78 134 135 209 135 194 105 189 96 180 89
Circle -7500403 true true 47 195 58
Circle -7500403 true true 195 195 58

circle
false
0
Circle -7500403 true true 0 0 300

circle 2
false
0
Circle -7500403 true true 0 0 300
Circle -16777216 true false 30 30 240

cow
false
0
Polygon -7500403 true true 200 193 197 249 179 249 177 196 166 187 140 189 93 191 78 179 72 211 49 209 48 181 37 149 25 120 25 89 45 72 103 84 179 75 198 76 252 64 272 81 293 103 285 121 255 121 242 118 224 167
Polygon -7500403 true true 73 210 86 251 62 249 48 208
Polygon -7500403 true true 25 114 16 195 9 204 23 213 25 200 39 123

cylinder
false
0
Circle -7500403 true true 0 0 300

dot
false
0
Circle -7500403 true true 90 90 120

face happy
false
0
Circle -7500403 true true 8 8 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Polygon -16777216 true false 150 255 90 239 62 213 47 191 67 179 90 203 109 218 150 225 192 218 210 203 227 181 251 194 236 217 212 240

face neutral
false
0
Circle -7500403 true true 8 7 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Rectangle -16777216 true false 60 195 240 225

face sad
false
0
Circle -7500403 true true 8 8 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Polygon -16777216 true false 150 168 90 184 62 210 47 232 67 244 90 220 109 205 150 198 192 205 210 220 227 242 251 229 236 206 212 183

fish
false
0
Polygon -1 true false 44 131 21 87 15 86 0 120 15 150 0 180 13 214 20 212 45 166
Polygon -1 true false 135 195 119 235 95 218 76 210 46 204 60 165
Polygon -1 true false 75 45 83 77 71 103 86 114 166 78 135 60
Polygon -7500403 true true 30 136 151 77 226 81 280 119 292 146 292 160 287 170 270 195 195 210 151 212 30 166
Circle -16777216 true false 215 106 30

flag
false
0
Rectangle -7500403 true true 60 15 75 300
Polygon -7500403 true true 90 150 270 90 90 30
Line -7500403 true 75 135 90 135
Line -7500403 true 75 45 90 45

flower
false
0
Polygon -10899396 true false 135 120 165 165 180 210 180 240 150 300 165 300 195 240 195 195 165 135
Circle -7500403 true true 85 132 38
Circle -7500403 true true 130 147 38
Circle -7500403 true true 192 85 38
Circle -7500403 true true 85 40 38
Circle -7500403 true true 177 40 38
Circle -7500403 true true 177 132 38
Circle -7500403 true true 70 85 38
Circle -7500403 true true 130 25 38
Circle -7500403 true true 96 51 108
Circle -16777216 true false 113 68 74
Polygon -10899396 true false 189 233 219 188 249 173 279 188 234 218
Polygon -10899396 true false 180 255 150 210 105 210 75 240 135 240

house
false
0
Rectangle -7500403 true true 45 120 255 285
Rectangle -16777216 true false 120 210 180 285
Polygon -7500403 true true 15 120 150 15 285 120
Line -16777216 false 30 120 270 120

leaf
false
0
Polygon -7500403 true true 150 210 135 195 120 210 60 210 30 195 60 180 60 165 15 135 30 120 15 105 40 104 45 90 60 90 90 105 105 120 120 120 105 60 120 60 135 30 150 15 165 30 180 60 195 60 180 120 195 120 210 105 240 90 255 90 263 104 285 105 270 120 285 135 240 165 240 180 270 195 240 210 180 210 165 195
Polygon -7500403 true true 135 195 135 240 120 255 105 255 105 285 135 285 165 240 165 195

line
true
0
Line -7500403 true 150 0 150 300

line half
true
0
Line -7500403 true 150 0 150 150

owl
true
15
Polygon -6459832 true false 152 154 137 154 125 213 140 229 159 229 179 214 167 154
Polygon -1184463 true false 151 140 136 140 126 202 139 214 159 214 176 200 166 140
Polygon -955883 true false 151 125 134 124 128 188 140 198 161 197 174 188 166 125
Polygon -1 true true 167 101 242 87 301 112 287 116 309 132 291 133 302 146 285 146 293 156 279 153 282 160 243 165 168 162
Polygon -1 true true 165 90 150 90 135 90 127 113 129 149 134 177 150 206 168 179 172 147 169 111
Polygon -1 true true 133 101 58 87 -1 112 13 116 -9 132 9 133 -2 146 15 146 7 156 21 153 18 160 57 165 132 162
Circle -955883 true false 122 45 58
Circle -1 true true 129 54 42
Polygon -16777216 true false 144 68 150 90 154 69
Line -16777216 false 165 135 165 120
Line -16777216 false 135 135 135 120
Line -16777216 false 150 105 150 120
Line -16777216 false 150 135 150 150
Line -16777216 false 285 120 240 105
Line -16777216 false 285 150 240 120
Line -16777216 false 285 135 255 120
Line -16777216 false 15 120 60 105
Line -16777216 false 15 135 45 120
Line -16777216 false 15 150 60 120
Line -16777216 false 270 150 255 135
Line -16777216 false 30 150 45 135

pentagon
false
0
Polygon -7500403 true true 150 15 15 120 60 285 240 285 285 120

person
false
0
Circle -7500403 true true 110 5 80
Polygon -7500403 true true 105 90 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285 180 195 195 90
Rectangle -7500403 true true 127 79 172 94
Polygon -7500403 true true 195 90 240 150 225 180 165 105
Polygon -7500403 true true 105 90 60 150 75 180 135 105

plant
false
0
Rectangle -7500403 true true 135 90 165 300
Polygon -7500403 true true 135 255 90 210 45 195 75 255 135 285
Polygon -7500403 true true 165 255 210 210 255 195 225 255 165 285
Polygon -7500403 true true 135 180 90 135 45 120 75 180 135 210
Polygon -7500403 true true 165 180 165 210 225 180 255 120 210 135
Polygon -7500403 true true 135 105 90 60 45 45 75 105 135 135
Polygon -7500403 true true 165 105 165 135 225 105 255 45 210 60
Polygon -7500403 true true 135 90 120 45 150 15 180 45 165 90

sheep
false
15
Circle -1 true true 203 65 88
Circle -1 true true 70 65 162
Circle -1 true true 150 105 120
Polygon -7500403 true false 218 120 240 165 255 165 278 120
Circle -7500403 true false 214 72 67
Rectangle -1 true true 164 223 179 298
Polygon -1 true true 45 285 30 285 30 240 15 195 45 210
Circle -1 true true 3 83 150
Rectangle -1 true true 65 221 80 296
Polygon -1 true true 195 285 210 285 210 240 240 210 195 210
Polygon -7500403 true false 276 85 285 105 302 99 294 83
Polygon -7500403 true false 219 85 210 105 193 99 201 83

square
false
0
Rectangle -7500403 true true 30 30 270 270

square 2
false
0
Rectangle -7500403 true true 30 30 270 270
Rectangle -16777216 true false 60 60 240 240

star
false
0
Polygon -7500403 true true 151 1 185 108 298 108 207 175 242 282 151 216 59 282 94 175 3 108 116 108

target
false
0
Circle -7500403 true true 0 0 300
Circle -16777216 true false 30 30 240
Circle -7500403 true true 60 60 180
Circle -16777216 true false 90 90 120
Circle -7500403 true true 120 120 60

tree
false
0
Circle -7500403 true true 118 3 94
Rectangle -6459832 true false 120 195 180 300
Circle -7500403 true true 65 21 108
Circle -7500403 true true 116 41 127
Circle -7500403 true true 45 90 120
Circle -7500403 true true 104 74 152

triangle
false
0
Polygon -7500403 true true 150 30 15 255 285 255

triangle 2
false
0
Polygon -7500403 true true 150 30 15 255 285 255
Polygon -16777216 true false 151 99 225 223 75 224

truck
false
0
Rectangle -7500403 true true 4 45 195 187
Polygon -7500403 true true 296 193 296 150 259 134 244 104 208 104 207 194
Rectangle -1 true false 195 60 195 105
Polygon -16777216 true false 238 112 252 141 219 141 218 112
Circle -16777216 true false 234 174 42
Rectangle -7500403 true true 181 185 214 194
Circle -16777216 true false 144 174 42
Circle -16777216 true false 24 174 42
Circle -7500403 false true 24 174 42
Circle -7500403 false true 144 174 42
Circle -7500403 false true 234 174 42

turtle
true
0
Polygon -10899396 true false 215 204 240 233 246 254 228 266 215 252 193 210
Polygon -10899396 true false 195 90 225 75 245 75 260 89 269 108 261 124 240 105 225 105 210 105
Polygon -10899396 true false 105 90 75 75 55 75 40 89 31 108 39 124 60 105 75 105 90 105
Polygon -10899396 true false 132 85 134 64 107 51 108 17 150 2 192 18 192 52 169 65 172 87
Polygon -10899396 true false 85 204 60 233 54 254 72 266 85 252 107 210
Polygon -7500403 true true 119 75 179 75 209 101 224 135 220 225 175 261 128 261 81 224 74 135 88 99

wheel
false
0
Circle -7500403 true true 3 3 294
Circle -16777216 true false 30 30 240
Line -7500403 true 150 285 150 15
Line -7500403 true 15 150 285 150
Circle -7500403 true true 120 120 60
Line -7500403 true 216 40 79 269
Line -7500403 true 40 84 269 221
Line -7500403 true 40 216 269 79
Line -7500403 true 84 40 221 269

wolf
false
0
Polygon -16777216 true false 253 133 245 131 245 133
Polygon -7500403 true true 2 194 13 197 30 191 38 193 38 205 20 226 20 257 27 265 38 266 40 260 31 253 31 230 60 206 68 198 75 209 66 228 65 243 82 261 84 268 100 267 103 261 77 239 79 231 100 207 98 196 119 201 143 202 160 195 166 210 172 213 173 238 167 251 160 248 154 265 169 264 178 247 186 240 198 260 200 271 217 271 219 262 207 258 195 230 192 198 210 184 227 164 242 144 259 145 284 151 277 141 293 140 299 134 297 127 273 119 270 105
Polygon -7500403 true true -1 195 14 180 36 166 40 153 53 140 82 131 134 133 159 126 188 115 227 108 236 102 238 98 268 86 269 92 281 87 269 103 269 113

x
false
0
Polygon -7500403 true true 270 75 225 30 30 225 75 270
Polygon -7500403 true true 30 75 75 30 270 225 225 270

@#$#@#$#@
NetLogo 5.1.0
@#$#@#$#@
@#$#@#$#@
@#$#@#$#@
<experiments>
  <experiment name="ModelRun1" repetitions="20" runMetricsEveryStep="false">
    <setup>setup</setup>
    <go>go</go>
    <metric>dead-owls-winter</metric>
    <metric>dead-owls-summer</metric>
    <enumeratedValueSet variable="initial-number-owls">
      <value value="100"/>
      <value value="500"/>
      <value value="1000"/>
    </enumeratedValueSet>
    <enumeratedValueSet variable="OwlMovement">
      <value value="&quot;distancesensing&quot;"/>
      <value value="&quot;rodentsensing&quot;"/>
      <value value="&quot;random&quot;"/>
    </enumeratedValueSet>
  </experiment>
</experiments>
@#$#@#$#@
@#$#@#$#@
default
0.0
-0.2 0 0.0 1.0
0.0 1 1.0 0.0
0.2 0 0.0 1.0
link direction
true
0
Line -7500403 true 150 150 90 180
Line -7500403 true 150 150 210 180

@#$#@#$#@
0
@#$#@#$#@
